package org.radrails.rails.internal.ui.actions.mvc; import org.eclipse.core.resources.IFile; import org.eclipse.jface.action.IAction; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.FileEditorInput; import org.radrails.rails.core.RailsConventions; import org.radrails.rails.ui.RailsUILog; import org.rubypeople.rdt.ui.RubyUI; public class ModelEditorActionDelegate extends MVCEditorActionDelegate { @Override protected boolean isEnabled() { IFile currentFile = getCurrentFile(); return RailsConventions.looksLikeController(currentFile) || RailsConventions.looksLikeHelper(currentFile) || RailsConventions.looksLikeView(currentFile) || RailsConventions.looksLikeTest(currentFile); } public void run(IAction action) { IFile currentFile = getCurrentFile(); IFile modelFile = RailsConventions.getModelFromController(currentFile); if (modelFile == null) modelFile = RailsConventions.getModelFromView(currentFile); if (modelFile == null) modelFile = RailsConventions.getModelFromHelper(currentFile); if (modelFile == null) modelFile = RailsConventions.getModelFromFunctionalTest(currentFile); if (modelFile == null) modelFile = RailsConventions.getModelFromUnitTest(currentFile); if (modelFile == null) return; IEditorInput editorInput = new FileEditorInput(modelFile); try { PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(editorInput, RubyUI.ID_RUBY_EDITOR); } catch (PartInitException e) { RailsUILog.logError("Error creating editor", e); } } }